package com.ztorn.fiscale.service;

import com.ztorn.fiscale.domain.FiscaleTaxDeclarationRelation;
import java.util.List;

/**
 * 报关单发票关联Service接口
 *
 * @author ztorn
 * @date 2025-09-19
 */
public interface IFiscaleTaxDeclarationRelationService
{
    /**
     * 查询报关单发票关联
     *
     * @param relationId 报关单发票关联ID
     * @return 报关单发票关联
     */
    public FiscaleTaxDeclarationRelation selectFiscaleTaxDeclarationRelationById(Long relationId);

    /**
     * 查询报关单发票关联列表
     *
     * @param fiscaleTaxDeclarationRelation 报关单发票关联
     * @return 报关单发票关联集合
     */
    public List<FiscaleTaxDeclarationRelation> selectFiscaleTaxDeclarationRelationList(FiscaleTaxDeclarationRelation fiscaleTaxDeclarationRelation);

    /**
     * 根据报关单ID查询报关单发票关联
     *
     * @param declarationId 报关单ID
     * @return 报关单发票关联
     */
    public FiscaleTaxDeclarationRelation selectFiscaleTaxDeclarationRelationByDeclarationId(Long declarationId);

    /**
     * 根据发票ID查询报关单发票关联
     *
     * @param invoiceId 发票ID
     * @return 报关单发票关联
     */
    public List<FiscaleTaxDeclarationRelation> selectFiscaleTaxDeclarationRelationByInvoiceId(Long invoiceId);

    /**
     * 新增报关单发票关联
     *
     * @param fiscaleTaxDeclarationRelation 报关单发票关联
     * @return 结果
     */
    public int insertFiscaleTaxDeclarationRelation(FiscaleTaxDeclarationRelation fiscaleTaxDeclarationRelation);

    /**
     * 批量新增报关单发票关联
     *
     * @param fiscaleTaxDeclarationRelations 报关单发票关联列表
     * @return 结果
     */
    public int insertFiscaleTaxDeclarationRelations(List<FiscaleTaxDeclarationRelation> fiscaleTaxDeclarationRelations);

    /**
     * 修改报关单发票关联
     *
     * @param fiscaleTaxDeclarationRelation 报关单发票关联
     * @return 结果
     */
    public int updateFiscaleTaxDeclarationRelation(FiscaleTaxDeclarationRelation fiscaleTaxDeclarationRelation);

    /**
     * 批量删除报关单发票关联
     *
     * @param relationIds 需要删除的报关单发票关联ID
     * @return 结果
     */
    public int deleteFiscaleTaxDeclarationRelationByIds(Long[] relationIds);

    /**
     * 根据报关单ID删除报关单发票关联
     *
     * @param declarationId 报关单ID
     * @return 结果
     */
    public int deleteFiscaleTaxDeclarationRelationByDeclarationId(Long declarationId);

    /**
     * 根据发票ID删除报关单发票关联
     *
     * @param invoiceId 发票ID
     * @return 结果
     */
    public int deleteFiscaleTaxDeclarationRelationByInvoiceId(Long invoiceId);

    /**
     * 删除报关单发票关联信息
     *
     * @param relationId 报关单发票关联ID
     * @return 结果
     */
    public int deleteFiscaleTaxDeclarationRelationById(Long relationId);
}
